import { loginAPI, getUserProfileAPI } from '@/api/user'
import { setToken, getToken } from '@/utils/auth'

// 登录 - 使用vuex管理token数据

// 默认导出
export default {
  // 1.分模块，开启命名空间
  namespaced: true,
  // 2. 数据状态 响应式 data
  state: () => {
    return {
      //* 1. 优先从本地取
      // name: 'cp',
      token: getToken() || '',
      profile: {}
    }
  },
  // 3.同步修改，VueX框架中，有且只有一种提交mutation
  mutations: {
    // 删除token
    removeToken (state) {
      state.token = ''
      this.removeToken()
    },
    // 存储token
    setToken (state, newToken) {
      state.token = newToken
      //* 2. // cookies也存一份
      setToken(newToken)
    },
    // 存储个人信息
    setProfile(state, newProfile) {
      state.profile = newProfile
    },
    // 清除用户信息
    clearUserInfo(state) {
      state.token = ''
      state.profile = {}
      // removeCookie(TOKEN_KEY)
    }
  },
  // 4.异步 接口请求 + 提交mutation
  actions: {
    // ctx: 上下文， 相当于 store
    // asyncLogin 异步 函数登录
    async asyncLogin (ctx, { username, password }) {
      // 1.调用登录接口
      const res = await loginAPI({ username, password })
      console.log(res)
      // 2.提交mutation
      // ctx.commit('setToken', res.data)
      ctx.commit('setToken', res.data.token)
    },
    async getUserProfile(ctx) {
      const res = await getUserProfileAPI()
      console.log('用户列表', res)
      ctx.commit('setProfile', res.data)
      // 目标数据return出去
      return res.data.permissions
    }
  }
}

